package org.galio.tourcoruna;


import java.util.List;

import org.galio.tourcoruna.modelo.CComercial;
import org.galio.tourcoruna.modelo.Coordenadas;
import org.galio.tourcoruna.modelo.Hotel;
import org.galio.tourcoruna.modelo.Lugar;
import org.galio.tourcoruna.modelo.Monumento;
import org.galio.tourcoruna.modelo.Museo;
import org.galio.tourcoruna.servicio.LugarService;
import org.galio.tourcoruna.servicio.LugarServiceImpl;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;

public class MiMapaParadaOverlayTour extends Overlay 
{
	Coordenadas miPosicion;
	TipoLugar tipoLugar;
	String nombreLugar; 
 
	public MiMapaParadaOverlayTour(Coordenadas miPosicion, TipoLugar tipoLugar,String nombreLugar)
	{
		this.miPosicion = miPosicion;
		this.tipoLugar = tipoLugar;
		this.nombreLugar = nombreLugar;
	}
	
    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow)
    {
        Projection projection = mapView.getProjection();
        GeoPoint geoPoint = new GeoPoint(miPosicion.getLatitudToInt(), miPosicion.getLongitudToInt());
        
       
        if (shadow == false)
        {
            Point centro = new Point();
            projection.toPixels(geoPoint, centro);
            Paint p = new Paint();
            p.setColor(Color.BLUE); 

            Bitmap bm = BitmapFactory.decodeResource(mapView.getResources(),R.drawable.icon_yo);  //yo           
            canvas.drawBitmap(bm, centro.x - bm.getWidth(), centro.y - bm.getHeight(), p);
           
        	Bitmap bmCComercial  = BitmapFactory.decodeResource(mapView.getResources(),R.drawable.icon_ccomercial);
        	Bitmap bmHotel  = BitmapFactory.decodeResource(mapView.getResources(),R.drawable.icon_hotel);
        	Bitmap bmMuseo  = BitmapFactory.decodeResource(mapView.getResources(),R.drawable.icon_museo);
        	Bitmap bmMonumento  = BitmapFactory.decodeResource(mapView.getResources(),R.drawable.icon_monumento);
        	Bitmap bm1 = null;
        	
        	if (tipoLugar == TipoLugar.CCOMERCIAL) bm1= bmCComercial;
        	else if (tipoLugar == TipoLugar.HOTEL) bm1= bmHotel;
        	else if (tipoLugar == TipoLugar.MUSEO) bm1= bmMuseo;
        	else if (tipoLugar == TipoLugar.MONUMENTO) bm1= bmMonumento;
        	
            LugarService l = new LugarServiceImpl();
       
            if (nombreLugar!=null){
            	Lugar lugar = l.getLugarByName(nombreLugar);
              	geoPoint = new GeoPoint(
    					lugar.getCoordenada().getLatitudToInt(), 
    					lugar.getCoordenada().getLongitudToInt()
    					);
              	Point puntoLugar = new Point();
              	projection.toPixels(geoPoint, puntoLugar);
              	canvas.drawBitmap(bm1, puntoLugar.x - bm1.getWidth(), puntoLugar.y - bm1.getHeight(), p);
  
            }
            else {
            	List<? extends Lugar>lugares = l.getLugaresByType(tipoLugar);
            
		        for(Lugar lugar : lugares)
		        {
		        	geoPoint = new GeoPoint(
		        					lugar.getCoordenada().getLatitudToInt(), 
		        					lugar.getCoordenada().getLongitudToInt()
		        					);
		        	Point puntoLugar = new Point();
	            	projection.toPixels(geoPoint, puntoLugar);
	            	
	            	if (tipoLugar==TipoLugar.ALL){
		            	if (CComercial.class.isInstance(lugar)) bm1= bmCComercial;
		            	else if (Hotel.class.isInstance(lugar)) bm1= bmHotel;
		            	else if (Museo.class.isInstance(lugar)) bm1= bmMuseo;
		            	else if (Monumento.class.isInstance(lugar)) bm1= bmMonumento;
	            	}
	                canvas.drawBitmap(bm1, puntoLugar.x - bm1.getWidth(), puntoLugar.y - bm1.getHeight(), p);
		        }
            }
		      
        }
    }
}
